package com.huonan.utils;

public class SQLToDSLConverter {

    public static String convertToDSL(String sql) {
        // 解析SQL语句，提取关键信息
        // 根据解析结果构建DSL查询语句
        // 这里只是一个简单的示例，你可以根据实际需求进行扩展和优化

        String[] parts = sql.trim().split("\\s+");
        String operation = parts[0].toUpperCase();
        String tableName = parts[1];

        StringBuilder dslBuilder = new StringBuilder();

        if (operation.equals("SELECT")) {
            dslBuilder.append("{ \"query\": { \"match_all\": {} } }");
        } else if (operation.equals("INSERT")) {
            // 提取插入的数据，构建index操作的DSL语句
            // 这里只是一个示例，你可以根据实际需求进行扩展和优化
            String values = sql.substring(sql.indexOf("VALUES") + 6).trim();
            dslBuilder.append("{ \"index\": { \"_index\": \"").append(tableName).append("\" } }\n");
            dslBuilder.append(values);
        } else if (operation.equals("UPDATE")) {
            // 提取更新的数据和条件，构建update操作的DSL语句
            // 这里只是一个示例，你可以根据实际需求进行扩展和优化
            String setClause = sql.substring(sql.indexOf("SET") + 3, sql.indexOf("WHERE")).trim();
            String whereClause = sql.substring(sql.indexOf("WHERE") + 5).trim();
            dslBuilder.append("{ \"query\": { \"bool\": { \"must\": [ { \"match\": { \"_id\": \"").append(tableName).append("\" } } ] } }, \"script\": { \"source\": \"").append(setClause).append("\" } }");
        } else if (operation.equals("DELETE")) {
            // 提取删除条件，构建delete操作的DSL语句
            // 这里只是一个示例，你可以根据实际需求进行扩展和优化
            String whereClause = sql.substring(sql.indexOf("WHERE") + 5).trim();
            dslBuilder.append("{ \"query\": { \"bool\": { \"must\": [ { \"match\": { \"_id\": \"").append(tableName).append("\" } } ] } } }");
        }

        return dslBuilder.toString();
    }

    public static void main(String[] args) {
        String sql = "SELECT id,name FROM my_table";
        String dsl = convertToDSL(sql);
        System.out.println(dsl);
    }
}